# 入门 Laravel 框架:快速搭建 Web 应用
Laravel 是目前最流行的 PHP 框架之一,以其优雅的语法和强大的功能深受开发者喜爱。本文将带你从零开始入门 Laravel,快速搭建你的第一个 Web 应用。
## 为什么选择 Laravel?
1. **优雅的语法**:Laravel 提倡"写代码是一种享受"的理念
2. **丰富的功能**:包含路由、ORM、模板引擎、队列等现代 Web 开发所需的一切
3. **活跃的社区**:庞大的开发者社区和丰富的扩展包
4. **完善的文档**:官方文档详尽且易于理解
## 环境准备
在开始之前,你需要确保系统满足以下要求:
- PHP ≥ 8.0
- Composer (PHP 依赖管理工具)
- 数据库 (MySQL, PostgreSQL, SQLite 等)
## 安装 Laravel
```bash
# 通过 Composer 创建新项目
composer create-project laravel/laravel my-first-app
# 进入项目目录
cd my-first-app
# 启动开发服务器
php artisan serve
```
访问 `http://localhost:8000` 你将看到 Laravel 的欢迎页面。
## 项目结构解析
Laravel 采用 MVC 架构,主要目录结构如下:
```
app/ # 应用核心代码
Http/ # 控制器和中间件
Models/ # 数据模型
bootstrap/ # 框架启动文件
config/ # 配置文件
database/ # 数据库迁移和种子文件
public/ # 公开访问目录
resources/ # 视图和前端资源
views/ # Blade 模板
routes/ # 路由定义
storage/ # 存储日志、缓存等
tests/ # 测试文件
```
## 快速创建博客系统
让我们通过创建一个简单的博客系统来体验 Laravel 的强大功能。
### 1. 配置数据库
修改 `.env` 文件配置数据库:
```env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_blog
DB_USERNAME=root
DB_PASSWORD=
```
### 2. 创建文章模型和迁移
Laravel 的 Artisan 命令行工具可以快速生成代码:
```bash
php artisan make:model Post -m
```
这将创建 `app/Models/Post.php` 模型和 `database/migrations/..._create_posts_table.php` 迁移文件。
编辑迁移文件:
```php
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
```
运行迁移:
```bash
php artisan migrate
```
### 3. 创建控制器
```bash
php artisan make:controller PostController --resource
```
编辑 `app/Http/Controllers/PostController.php`:
```php
public function index()
{
$posts = Post::all();
return view('posts.index', compact('posts'));
}
public function create()
{
return view('posts.create');
}
public function store(Request $request)
{
$request->validate([
'title' => 'required',
'content' => 'required',
]);
Post::create($request->all());
return redirect()->route('posts.index')
->with('success','Post created successfully.');
}
// 其他方法省略...
```
### 4. 定义路由
在 `routes/web.php` 中添加:
```php
Route::resource('posts', PostController::class);
```
一条语句就定义了完整的 CRUD 路由!
### 5. 创建视图
在 `resources/views/posts/` 目录下创建:
`index.blade.php`:
```html
@extends('layouts.app')
@section('content')
<div class="container">
@if(session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
<h1>Posts</h1>
<a href="{{ route('posts.create') }}" class="btn btn-primary">New Post</a>
<table class="table mt-3">
<thead>
<tr>
<th>Title</th>
<th>Content</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach($posts as $post)
<tr>
<td>{{ $post->title }}</td>
<td>{{ Str::limit($post->content, 50) }}</td>
<td>
<a href="{{ route('posts.show', $post) }}" class="btn btn-info">View</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@endsection
```
`create.blade.php`:
```html
@extends('layouts.app')
@section('content')
<div class="container">
<h1>Create Post</h1>
<form action="{{ route('posts.store') }}" method="POST">
@csrf
<div class="form-group">
<label for="title">Title</label>
<input type="text" class="form-control" id="title" name="title" required>
</div>
<div class="form-group">
<label for="content">Content</label>
<textarea class="form-control" id="content" name="content" rows="5" required></textarea>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
@endsection
```
### 6. 测试应用
访问 `http://localhost:8000/posts` 你应该能看到:
- 文章列表页面
- "New Post"按钮
- 创建新文章的表单
## Laravel 更多强大功能
1. **Eloquent ORM**:优雅的 ActiveRecord 实现
2. **Blade 模板引擎**:简洁强大的模板系统
3. **Artisan 命令行**:提高开发效率的工具
4. **队列系统**:处理耗时任务
5. **事件系统**:实现松耦合架构
6. **测试支持**:内置 PHPUnit 支持
## 学习资源推荐
1. [Laravel 官方文档](https://laravel.com/docs)
2. [Laracasts 视频教程](https://laracasts.com)
3. [GitHub 上的 Laravel 项目](https://github.com/laravel/laravel)
4. [Laravel 中文社区](https://learnku.com/laravel)
## 结语
通过本文,你已经学会了 Laravel 的基本使用方法,并搭建了一个简单的博客系统。Laravel 还有很多强大的功能等待你去探索,如用户认证、API 开发、缓存系统等。
Laravel 的学习曲线相对平缓,但功能却非常强大,是构建现代 Web 应用的绝佳选择。希望你能享受 Laravel 带来的开发乐趣!
**下一步建议**:
- 尝试添加用户认证功能
- 探索 Laravel 的前端工具链 (Mix/Vite)
- 学习如何部署 Laravel 应用到生产环境
如果你在开发过程中遇到问题,欢迎在评论区留言讨论!